/*
    文件内容: Acceptor类,处理TcpServer中绑定和listen的相关操作
    文件名: Acceptor.h
    作者: 中国好青年(码农论坛)
    时间: 2024/9/8
*/

#pragma once
#include "EventLoop.h"
#include "InetAddress.h"
#include "Socket.h"
#include <memory>

/*
    类名: Acceptor
    作用: 封装Acceptor相关操作类
*/
class Acceptor
{
private:
    EventLoop *loop_;
    Socket    serversock_;
    Channel   acceptchan_;
    std::function<void(std::unique_ptr<Socket>)> newconncallback_;
public:
    /* 构造函数 和 析构函数 */
    Acceptor(EventLoop* loop,const std::string &ip, uint16_t port);
    ~Acceptor();

    void newConnection();
    void setNewconnCallback(std::function<void(std::unique_ptr<Socket>)> fn);
};